<?php
/*
Copyright 2008, Nathalia


Author:
Nathalia Sautchuk Patrício          (nathalia.sautchuk@gmail.com)

*/
class Cadastrar extends TPage
{
    public $pasta = "files/artigos/";
    public $ArtigoID = 0;

    public function onInit($param)
	{
		parent::onInit($param);

        $this->panelb->visible = false;
        if($_SESSION["ArtigoID"])
            $this->ArtigoID = $_SESSION["ArtigoID"];
        $this->congressoList->DataTextField='Nome';
		$this->congressoList->DataValueField='CongressoID';
        $criteria = new TActiveRecordCriteria;
        $criteria->Condition = "DataSubmissaoInicio < '".date('Y-m-d')."' AND DataSubmissaoTermino > '".date('Y-m-d')."'";
		$this->congressoList->DataSource=CongressoRecord::finder()->findAll($criteria);
		$this->congressoList->dataBind();

        $this->autoresList->DataTextField='Nome';
		$this->autoresList->DataValueField='UsuarioID';
		$this->autoresList->DataSource=UserRecord::finder()->findAll();
		$this->autoresList->dataBind();

        $this->getAutores();

    }

    public function getAutores()
    {
        // fetches all data account information
        $criteria = new TActiveRecordCriteria;
        $criteria->Condition = 'ArtigoID = '.$this->ArtigoID;
        $artigos = ArtigoRecord::finder()->withAutores()->findAll($criteria);

        $this->UserGrid->DataSource = $artigos[0]->autores;
        $this->UserGrid->dataBind();
    }

    public function wizardNextStep($sender,$param)
	{
		switch($param->CurrentStepIndex)
		{
			case 0: 		
				$this->ArtigoID = $this->criarArtigo();	
                $this->Session->add('ArtigoID', $this->ArtigoID);
	
                $this->getAutores();
				break;
			case 1: //autores
				break;
			case 2: //upload
				break;
        }
    }    

    public function wizardCompleted($sender, $param)
	{
        $this->getResponse()->redirect('./index.php?page=Artigos.Listar');
	}

    public function criarArtigo()
	{
        if($this->IsValid)  // when all validations succeed
        {
            // populates a artigoRecord object with user inputs
            $artigoRecord                = new ArtigoRecord;
            $artigoRecord->Titulo        = $this->Titulo->Text; 
            $artigoRecord->Resumo        = $this->Resumo->Text; 
            $artigoRecord->Abstract      = $this->Abstract->Text; 
            $artigoRecord->PalavraChave1 = $this->PalavraChave1->Text; 
            $artigoRecord->PalavraChave2 = $this->PalavraChave2->Text;
            $artigoRecord->PalavraChave3 = $this->PalavraChave3->Text;
            $artigoRecord->Status        = 0;   
            $artigoRecord->DataEnvio     = date('Y-m-d H-i-s');  
            $artigoRecord->CongressoID   = $this->congressoList->getSelectedValue();  
 
            // saves to the database via Active Record mechanism
            $artigoRecord->save();

            $artigoAutorRecord           = new ArtigoAutorRecord;
            $artigoAutorRecord->AutorID  = $this->User->Name; 
            $artigoAutorRecord->ArtigoID = $artigoRecord->ArtigoID; 
            $artigoAutorRecord->save();

            return $artigoRecord->ArtigoID;

        }
    }

    public function fileUploaded($sender,$param)
	{
    //Ideal é que ele verifique se o arquivo é do tipo pfd, e também utilize o próprio nome do pdf para salvar e não uma artigo[id].pdf
		if($sender->getHasFile())
		{
            if($sender->id == "artigo")
            {
                $nome = $this->pasta."artigo".$this->ArtigoID.".pdf";
            }
			$salvou = $sender->saveAs($nome);	
		}

        $this->atualizarArquivos();

	}

    public function adicionarClicked($sender,$param)
    {
        if($param instanceof TCommandEventParameter and $param->CommandName == "adicionar")
        {
            //verifica se já está adicionado
            $criteria = new TActiveRecordCriteria;
            $criteria->Condition = 'ArtigoID = '.$this->ArtigoID.' AND AutorID = '.$this->autoresList->getSelectedValue();

            if( ArtigoAutorRecord::finder()->findAll($criteria) == null )
            {
                $artigoAutorRecord           = new ArtigoAutorRecord;
                $artigoAutorRecord->AutorID  = $this->autoresList->getSelectedValue(); 
                $artigoAutorRecord->ArtigoID = $this->ArtigoID; 
                $artigoAutorRecord->save();
            }

            $this->getAutores();
        }
    }
    
    public function deleteButtonClicked($sender,$param)
    {     
        // obtains the datagrid item that contains the clicked delete button
        $item = $param->Item;
        // obtains the primary key corresponding to the datagrid item
        $autorID = $this->UserGrid->DataKeys[$item->ItemIndex];
        if($this->User->Name != $autorID)
        {
            $criteria = new TActiveRecordCriteria;
            $criteria->Condition = 'AutorID = '.$autorID.' and ArtigoID = '.$this->ArtigoID;
            
            // deletes the user record with the specified username primary key
            ArtigoAutorRecord::finder()->deleteAll($criteria);

            $this->getAutores();
        }
    }

    public function removerClicked($sender,$param)
    {
        if($param instanceof TCommandEventParameter and $param->CommandName == "remover")

            switch($param->CommandParameter)
            {
                case 1:
                    if(file_exists($this->pasta."artigo".$this->ArtigoID.".pdf"))
                    {
                        unlink($this->pasta."artigo".$this->ArtigoID.".pdf");
                    }
                    break;
            }
            $this->atualizarArquivos();

    }

    public function atualizarArquivos()
    {

        if(file_exists($this->pasta."artigo".$this->ArtigoID.".pdf"))
        {                
            $this->panela->visible = false;
            $this->panelb->visible = true;
            $this->tamanho->Text = round(filesize($this->pasta."artigo".$this->ArtigoID.".pdf")/1024,1);
            $this->artName->Text = "artigo".$this->ArtigoID.".pdf";
        }
        else 
        {
            $this->panela->visible = true;
            $this->panelb->visible = false;
        }


    }
}
?>
